package inherit;

public class test {
    public static void main(String[] agrs){
        Student s1=new Student(23,"孙悟空","201702","二年级");
        s1.eat();
        s1.study();
        s1.sleep();
        System.out.println(s1.toString());
        Student s2=new Student();//创建新的实例化对象前要先构造一个空的函数
        s2.setAge(30);
        s2.setName("猪八戒");
        System.out.println(s2.toString());
        System.out.println(s2.getAge()+"..........."+s2.getName());
        Person p=s1;//里氏代换原则 通过父类引用了子类对象，只能调用父类的方法
        System.out.println(p.toString());//toString()为子类重写后的方法
//        Person p2=new Person();//通过父类创建父类的实例化对象，与子类无关，调用父类函数
////        Student p2=new Person();子类不可以引用父类的对象，该方法时错的
//        p2.setAge(34);
//        p2.setName("太上老君");
//         System.out.println(p2.toString());//toString()为父类的方法
        Person p1=new Student();//通过父类创建子类的实例化对象，调用子类的函数
        Person p2=new Employee();
        p1.study();//实例化对象不一样，调用的函数也不一样，实现多态
        p2.study();
        Student p3=new Student();//自动调用了父类默认的构造方法
        p3.study();
    }
}
